package com.lee.account.jwt;

import java.util.Date;

import org.apache.commons.lang3.StringUtils;

import com.auth0.jwt.JWT;
import com.auth0.jwt.algorithms.Algorithm;
import com.auth0.jwt.exceptions.JWTDecodeException;
import com.lee.account.entity.SysUser;
import com.lee.account.utils.Constants;

/**
 * token操作
 * @author liyou
 * @date 2019年9月3日 下午4:03:59
 */
public class Token {
	
	/**
	 * token生成
	 * @param user
	 * @return
	 */
	public static String getToken(SysUser user) {
        
        return JWT.create()
        		.withAudience(user.getId())
        		.withIssuedAt(new Date())
        		.withExpiresAt(new Date(System.currentTimeMillis() + Constants.SERVER_TOKEN_EXPIRES_TIME))
                .sign(Algorithm.HMAC256(user.getPassword()));
    }
	
	/**
	 * 获取token中的userId
	 * @param accessToken
	 * @return
	 */
	public static String getUsernameByToken(String accessToken) {
		String userId = null;
		if(StringUtils.isBlank(accessToken)) {
			return null;
		}
		try {
			return JWT.decode(accessToken).getAudience().get(0);
		} catch (JWTDecodeException j) {
			j.printStackTrace();
		}
		return userId;
	}
}
